#Boa:Frame:Frame_Produtos
# -*- coding: cp1252 -*-
import wx


def create(parent):
    return Frame_Produtos(parent)

[wxID_FRAME_PRODUTOS, wxID_FRAME_PRODUTOSATUALIZAR_QTD, 
 wxID_FRAME_PRODUTOSBOTAOVOLTAR, wxID_FRAME_PRODUTOSCADASTRARPRODUTO, 
 wxID_FRAME_PRODUTOSEXCLUIRPRODUTO, wxID_FRAME_PRODUTOSLISTCTRL1, 
 wxID_FRAME_PRODUTOSPESQUISAR, wxID_FRAME_PRODUTOSSTATICBITMAP1, 
 wxID_FRAME_PRODUTOSSTATICBOX1, wxID_FRAME_PRODUTOSSTATICTEXT1, 
 wxID_FRAME_PRODUTOSTEXTCTRL_PESQUISAR, 
] = [wx.NewId() for _init_ctrls in range(11)]

class Frame_Produtos(wx.Frame):
    def _init_coll_listCtrl1_Columns(self, parent):
        # generated method, don't edit

        parent.InsertColumn(col=0, format=wx.LIST_FORMAT_CENTER,
              heading=u'Nome', width=-1)
        parent.InsertColumn(col=1, format=wx.LIST_FORMAT_CENTER,
              heading=u'Quantidade', width=-1)
        parent.InsertColumn(col=2, format=wx.LIST_FORMAT_LEFT,
              heading=u'Qtd Minima', width=-1)

    def _init_ctrls(self, prnt):
        # generated method, don't edit
        wx.Frame.__init__(self, id=wxID_FRAME_PRODUTOS, name=u'Frame_Produtos',
              parent=prnt, pos=wx.Point(536, 81), size=wx.Size(665, 647),
              style=wx.DEFAULT_FRAME_STYLE, title=u'Frame_Produtos')
        self.SetClientSize(wx.Size(649, 609))
        self.SetBackgroundColour(wx.Colour(255, 255, 255))
        self.Center(wx.BOTH)
        self.Bind(wx.EVT_CLOSE, self.OnFrame_ProdutosClose)

        self.staticBox1 = wx.StaticBox(id=wxID_FRAME_PRODUTOSSTATICBOX1,
              label=u"Cristina's Hair - Cadastro de Produtos",
              name='staticBox1', parent=self, pos=wx.Point(16, 16),
              size=wx.Size(608, 371), style=0)
        self.staticBox1.SetFont(wx.Font(10, wx.SWISS, wx.NORMAL, wx.NORMAL,
              False, u'Tahoma'))

        self.CadastrarProduto = wx.Button(id=wxID_FRAME_PRODUTOSCADASTRARPRODUTO,
              label=u'Cadastrar Novo Produto', name=u'CadastrarProduto',
              parent=self, pos=wx.Point(32, 56), size=wx.Size(128, 40),
              style=0)
        self.CadastrarProduto.Bind(wx.EVT_BUTTON, self.OnCadastrarProdutoButton,
              id=wxID_FRAME_PRODUTOSCADASTRARPRODUTO)

        self.textCtrl_Pesquisar = wx.TextCtrl(id=wxID_FRAME_PRODUTOSTEXTCTRL_PESQUISAR,
              name=u'textCtrl_Pesquisar', parent=self, pos=wx.Point(184, 80),
              size=wx.Size(264, 21), style=wx.TE_PROCESS_ENTER, value=u'')
        self.textCtrl_Pesquisar.Bind(wx.EVT_TEXT_ENTER,
              self.OnTextCtrl_PesquisarTextEnter,
              id=wxID_FRAME_PRODUTOSTEXTCTRL_PESQUISAR)

        self.Pesquisar = wx.Button(id=wxID_FRAME_PRODUTOSPESQUISAR,
              label=u'Pesquisar', name=u'Pesquisar', parent=self,
              pos=wx.Point(472, 80), size=wx.Size(80, 24), style=0)
        self.Pesquisar.Bind(wx.EVT_BUTTON, self.OnPesquisarButton,
              id=wxID_FRAME_PRODUTOSPESQUISAR)

        self.ExcluirProduto = wx.Button(id=wxID_FRAME_PRODUTOSEXCLUIRPRODUTO,
              label=u'Excluir Produto', name=u'ExcluirProduto', parent=self,
              pos=wx.Point(32, 112), size=wx.Size(128, 40), style=0)
        self.ExcluirProduto.Bind(wx.EVT_BUTTON, self.OnExcluirProdutoButton,
              id=wxID_FRAME_PRODUTOSEXCLUIRPRODUTO)

        self.staticText1 = wx.StaticText(id=wxID_FRAME_PRODUTOSSTATICTEXT1,
              label=u'Pesquisar Produtos', name='staticText1', parent=self,
              pos=wx.Point(184, 48), size=wx.Size(128, 19), style=0)
        self.staticText1.SetFont(wx.Font(12, wx.SWISS, wx.NORMAL, wx.BOLD,
              False, u'Times New Roman'))

        self.staticBitmap1 = wx.StaticBitmap(bitmap=wx.Bitmap(u'Imagens/logotipo300dpi-30%.jpg',
              wx.BITMAP_TYPE_JPEG), id=wxID_FRAME_PRODUTOSSTATICBITMAP1,
              name='staticBitmap1', parent=self, pos=wx.Point(74, 416),
              size=wx.Size(500, 176), style=0)
        self.staticBitmap1.Center(wx.HORIZONTAL)

        self.listCtrl1 = wx.ListCtrl(id=wxID_FRAME_PRODUTOSLISTCTRL1,
              name='listCtrl1', parent=self, pos=wx.Point(184, 128),
              size=wx.Size(408, 208), style=wx.LC_REPORT)
        self._init_coll_listCtrl1_Columns(self.listCtrl1)
        self.listCtrl1.Bind(wx.EVT_LIST_ITEM_ACTIVATED,
              self.OnListCtrl1ListItemActivated,
              id=wxID_FRAME_PRODUTOSLISTCTRL1)

        self.Atualizar_Qtd = wx.Button(id=wxID_FRAME_PRODUTOSATUALIZAR_QTD,
              label=u'Atualizar Quantidade', name=u'Atualizar_Qtd', parent=self,
              pos=wx.Point(32, 168), size=wx.Size(128, 40), style=0)
        self.Atualizar_Qtd.Bind(wx.EVT_BUTTON, self.OnAtualizar_QtdButton,
              id=wxID_FRAME_PRODUTOSATUALIZAR_QTD)

        self.BotaoVoltar = wx.Button(id=wxID_FRAME_PRODUTOSBOTAOVOLTAR,
              label=u'Voltar Para o Menu', name=u'BotaoVoltar', parent=self,
              pos=wx.Point(32, 288), size=wx.Size(128, 48), style=0)
        self.BotaoVoltar.Bind(wx.EVT_BUTTON, self.OnBotaoVoltarButton,
              id=wxID_FRAME_PRODUTOSBOTAOVOLTAR)

    def __init__(self, parent):
        self._init_ctrls(parent)
        self.parent = parent
        self.RedimensionarColunas(-2)
        
        self.OnPesquisarButton(None)

    #Funcao ativada ao pressionar ENTER na caixa de Pesquisa
    def OnTextCtrl_PesquisarTextEnter(self, event):
        self.OnPesquisarButton(self)

    #Funcao do Botao Cadastrar Produto
    def OnCadastrarProdutoButton(self, event):

        from Dialog_CadastrarProduto import *
        janela = CadastrarProduto(self)
        janela.ShowModal()

    #Funcao do Botao Pesquisar Produto
    def OnPesquisarButton(self, event):
        
        from Class_ControleEstoque import *
        Controle = ControleEstoque()
        
        #Pega o valor do campo da pesquisa e o Campo a ser pesquisado (Nome, Preco)
        Dado = self.textCtrl_Pesquisar.GetValue()
        
        #Pesquisa todos os Produtos que possuam pelo menos uma parte do 
        #dados a ser pesquisado igual ao que foi digitado na caixa de pesquisa
        self.ListaProdutos = Controle.PesquisarProdutoNome(Dado)
        
        #Envia todos os dados da ListaProdutos pra o metodo que preenche a tabela
        self.PreencherTabela(self.ListaProdutos)

    #Funcao do Botao Excluir Produto
    def OnExcluirProdutoButton(self, event):
        
        from Class_ControleEstoque import *
        Controle = ControleEstoque()
        
        if self.listCtrl1.GetItemCount() <> 0:
            
            #Descobre o Produto selecionado
            pos = self.listCtrl1.GetFocusedItem()
            Produto =  self.ListaProdutos[pos]
            
            
            #Mostra a MessageBox confirmando a exclusao do Produto
            m = "Voce tem certeza que deseja excluir o Produto\n%s ??"%(Produto.GetNome())
            t = "Exclusao Produto"
            confirmacao = wx.MessageBox(m,t,wx.YES_NO)
            
            #Se "YES"
            if confirmacao == 2:
                
                
                confirmacao = Controle.RemoverProduto(Produto)
                
                #Se o Produto foi removido
                if confirmacao == True:
                    m = "Produto removido com sucesso!"
                    t = "Exclusao Produto"
                    wx.MessageBox(m,t,wx.OK)
                    
            
        #Se Nenhum Produto estiver selecionado
        else:
            m = "Nenhum Produto na lista"
            t = "Exclusao Produto"
            confirmacao = wx.MessageBox(m,t,wx.ICON_ERROR)
            
        
    #Funcao do Duplo Clique em alguma linha da tabela
    def OnListCtrl1ListItemActivated(self, event):
        from Dialog_EditarProduto import *
   
        #Descobre o Produto selecionado
        pos = self.listCtrl1.GetFocusedItem()
        Produto =  self.ListaProdutos[pos]
        
        #Criar o Dialog Editar Produto passando o Objeto Produto a ser editado
        Janela = EditarProduto(self, Produto)
        Janela.ShowModal()

        
        
    #Metodo que Preenche a tabela com os nomes e precos dos produtos pesquisados
    def PreencherTabela(self, ListaProdutos):
        import sys
        lista = self.listCtrl1
        
        #Deleta todos os item da tabela
        lista.DeleteAllItems()
        
        if ListaProdutos <> False:
            #Pega os dados de cada Produto e joga na tabela
            for i in ListaProdutos:
                
                index = lista.InsertStringItem(sys.maxint,'0')
                if (float(index)/2).is_integer() == False:
                    self.listCtrl1.SetItemBackgroundColour(index, (230,230,230))
                
                lista.SetStringItem(index, 0, str(i.GetNome()))
                lista.SetStringItem(index, 1, str(i.GetQtd()))
                lista.SetStringItem(index, 2, str(i.GetQtdMinima()))
                
            self.RedimensionarColunas(-2)

    #Metodo que Redimensiona o tamanho das colunas
    def RedimensionarColunas(self, num):
        self.listCtrl1.SetColumnWidth(0, num)
        self.listCtrl1.SetColumnWidth(1, num)
        

    def OnChoice1Choice(self, event):
        self.textCtrl_Pesquisar.SetFocus()

    def OnAtualizar_QtdButton(self, event):
        
        from Dialog_AtualizarEstoque import *
        janela = AtualizarEstoque(self)
        janela.ShowModal()

    def OnBotaoVoltarButton(self, event):
        self.Close()

    def OnFrame_ProdutosClose(self, event):
        from Frame_JanelaPrincipal import *
        func = self.parent.Funcionario
        self.parent.Close()
        
        janela = JanelaPrincipal(None, func )
        janela.Show()
